package dk.dr.radio.diverse;

import android.graphics.Paint;
import android.graphics.Typeface;
import android.text.TextPaint;
import android.text.style.TypefaceSpan;


/**
 * Kilde: http://stackoverflow.com/questions/4819049/how-can-i-use-typefacespan-or-stylespan-with-a-custom-typeface
 */
public class EgenTypefaceSpan extends TypefaceSpan {
  private Typeface newType;

  public EgenTypefaceSpan(String family, Typeface type) {
    super(family);
    newType = type;
  }

  @Override
  public void updateDrawState(TextPaint ds) {
    applyCustomTypeFace(ds, newType);
  }

  @Override
  public void updateMeasureState(TextPaint paint) {
    applyCustomTypeFace(paint, newType);
  }

  private void applyCustomTypeFace(Paint paint, Typeface tf) {
    int oldStyle;
    Typeface old = paint.getTypeface();
    if (old == null) {
      oldStyle = 0;
    } else {
      oldStyle = old.getStyle();
    }

    int fake = oldStyle & ~tf.getStyle();
    if ((fake & Typeface.BOLD) != 0) {
      paint.setFakeBoldText(true);
    }

    if ((fake & Typeface.ITALIC) != 0) {
      paint.setTextSkewX(-0.25f);
    }

    paint.setTypeface(tf);
  }
}
